Greetings, Original post was a very long time ago, but I thought it still important to post the SUM. Thanks to all who responded, too many to name. ORIGINAL QUESTION: I am tryin gto compare two different point themes, both contain the same general information, but one is older than the other. I'd like to compare the themes. First, I need to find the points with same ID, but different locations (some points have been updated using better GPS equipment/processing). Second, I need to identify the points that exist in the old theme, but not the new one. I've looked at ArcScripts page, and although there are some scripts that look within one theme, I'm not sure what to do so I can compare two themes... (avenue beginner) I do have access to ArcMap and ArcInfo 8.1. SOLUTION: Other issues surfaced on the way to getting the solution, in particular the nasty habit of having our lat and long values truncated in MS Access so we couldn't do a simple query (which many of you suggested). The solution that worked for me was suggested and implemented by Chris Mack (THANK YOU!) He sent a VBA script that works in Excel. Its copied below. Fields in the table are IDNUMBER, ID_CD, LAT, LONG. Works great for the application that I'm interested in. Hope it can help you too. Thanks again Chris, for your time. An alternate solution to use within ArcView is prsented below too, for those who have a preference. Public Sub CompareTables() 'This procedure compares two data tables, checks for new ID entries 'and flags for coordinate changes. Data tables to be compared should be in ascending 'order (on IDNUMBER, then ID_CD fields). All blank Lat and Long records must be 'removed prior to running. The search algorithm used for this is very inefficient 'as all ranges in the Old Table are compared every time for each record in the New 'Table. A more efficient method of searching and comparing the tables could involve 'a Hash table searching technique and compared ranges removed per comparison ' 'Author: Chris Mack - Coastal Engineer ' US Army Corps of Engineers - Charleston District ' chris.j.mack@usace.army.mil [Email] 'Last Revised: 22 OCT 2001 ' 'create worksheet pointers Dim shtOldTable As Worksheet, shtNewTable As Worksheet Set shtOldTable = Application.Workbooks("Compare Tables.xls").Worksheets("OldTable") Set shtNewTable = Application.Workbooks("Compare Tables.xls").Worksheets("NewTable") 'declare variables Dim rngOld As Range, rngNew As Range, rngCell As Range 'New and Old Ranges to compare Dim strComments As String 'Processing comments Dim dblTol As Double 'Lat-Long difference tolerance dblTol = 0.00001 Dim blnFound As Boolean 'For New IDs blnFound = False 'create ranges for comparison place holders shtOldTable.Activate Range("a1").Select Range("a2", Selection.End(xlDown)).Select Set rngOld = Application.Selection shtNewTable.Activate Range("a1").Select Range("a2", Selection.End(xlDown)).Select Set rngNew = Application.Selection 'compare tables For Each rngNew In rngNew 'initialize comments strComments = "" For Each rngCell In rngOld 'check if new ID entry...if not, check if Lat-Long values changed If Trim(rngCell.Value) = Trim(rngNew.Value) And _ Trim(rngCell.Offset(0, 1).Value) = Trim(rngNew.Offset(0, 1).Value) Then strComments = strComments & "No Change" blnFound = True 'now check the Lat-Long values If Abs(rngNew.Offset(0, 2).Value - rngCell.Offset(0, 2).Value) > dblTol Then strComments = strComments & ", Lat <> [" & rngNew.Offset(0, 2).Value - rngCell.Offset(0, 2).Value & "]" End If If Abs(rngNew.Offset(0, 3).Value - rngCell.Offset(0, 3).Value) > dblTol Then strComments = strComments & ", Long <>" End If Exit For Else blnFound = False End If Next 'if not found, must be new ID If Not blnFound Then strComments = strComments & "New ID" End If 'list comments rngNew.Offset(0, 5).Value = strComments 'reset comments strComments = "" Next End Sub ALTERNATE SOLUTION, suggested by Bill Huber (thank you very much, Bill) This analysis is readily done with joins, calculations, and queries, which is perhaps why nobody has bothered to offer a scripted solution. Joining the new theme to the old (using the common [ID] field) will succeed only for records with matches of ID. This will show you which IDs do not appear in the new theme. Performing the join in the other direction (after removing the first join) will show you which IDs do not appear in the old theme. Both joins show you IDs common to both themes. To find points with different locations, you need to create [X] and [Y] coordinate fields. This is easily and quickly done with Field Calculator expressions [shape].GetX and [shape].GetY Do this first, then do a join. You will have to provide a new alias for the joined [X] and [Y] fields so that they have distinct names. Call them, for example, [X New] and [Y New]. Having done this, the query [X] <> [X New] or ([Y] <> [Y New]) will select the points with matching ids but changed coordinates. To perform your second analysis, join the new theme spatially to the old theme. The points in the old theme whose [distance] attribute is nonzero are the ones that do not exist in the new theme, regardless of their [ID] values. --- Fritz, Ann M.